/**
 * Work with exchanges.
 *
 * Exchanges match and distribute messages across queues.  Exchanges can be
 *   configured in the server or created at runtime.
 *
 * @name Exchange
 * @exports Exchange as api.Exchange
 * @class
 */


/**
 * Confirms an exchange declaration.
 *
 * This method confirms a Declare method and confirms the name of the
 *     exchange, essential for automatically-named exchanges.
 *
 * @name Exchange#declareOk
 * @event
 * 
 */

/**
 * Confirm deletion of an exchange.
 *
 * This method confirms the deletion of an exchange.
 *
 * @name Exchange#deleteOk
 * @event
 * 
 */



/**
 * Declare exchange, create if needed.
 *
 * This method creates an exchange if it does not already exist, and if the
 *     exchange exists, verifies that it is of the correct and expected class.
 *
 * @name Exchange#declare
 * @function
 * @param {Number} ticket An access ticket granted by the server for a certain set of access
 *     rights within a specific realm. Access tickets are valid within the
 *     channel where they were created, and expire when the channel closes.
 * @param {String} exchange The exchange name is a client-selected string that identifies
 *       the exchange for publish methods.  Exchange names may consist
 *       of any mixture of digits, letters, and underscores.  Exchange
 *       names are scoped by the virtual host.
 * @param {String} type Each exchange belongs to one of a set of exchange types implemented
 *       by the server.  The exchange types define the functionality of the
 *       exchange - i.e. how messages are routed through it.  It is not valid
 *       or meaningful to attempt to change the type of an existing exchange.
 * @param {Boolean} passive If set, the server will not create the exchange.  The client can use
 *     this to check whether an exchange exists without modifying the server
 *     state.
 * @param {Boolean} durable If set when creating a new exchange, the exchange will be marked as
 *       durable.  Durable exchanges remain active when a server restarts.
 *       Non-durable exchanges (transient exchanges) are purged if/when a
 *       server restarts.
 * @param {Boolean} autoDelete If set, the exchange is deleted when all queues have finished
 *       using it.
 * @param {Boolean} internal If set, the exchange may not be used directly by publishers, but
 *       only when bound to other exchanges. Internal exchanges are used to
 *       construct wiring that is not visible to applications.
 * @param {Boolean} nowait If set, the server will not respond to the method. The client should
 *     not wait for a reply method.  If the server could not complete the
 *     method it will raise a channel or connection exception.
 * @param {Object} arguments A set of arguments for the declaration. The syntax and semantics
 *       of these arguments depends on the server implementation.  This
 *       field is ignored if passive is 1.
 */

/**
 * Delete an exchange.
 *
 * This method deletes an exchange.  When an exchange is deleted all queue
 *     bindings on the exchange are cancelled.
 *
 * @name Exchange#delete
 * @function
 * @param {Number} ticket An access ticket granted by the server for a certain set of access
 *     rights within a specific realm. Access tickets are valid within the
 *     channel where they were created, and expire when the channel closes.
 * @param {String} exchange The exchange name is a client-selected string that identifies
 *       the exchange for publish methods.  Exchange names may consist
 *       of any mixture of digits, letters, and underscores.  Exchange
 *       names are scoped by the virtual host.
 * @param {Boolean} ifUnused If set, the server will only delete the exchange if it has no queue
 *       bindings. If the exchange has queue bindings the server does not
 *       delete it but raises a channel exception instead.
 * @param {Boolean} nowait If set, the server will not respond to the method. The client should
 *     not wait for a reply method.  If the server could not complete the
 *     method it will raise a channel or connection exception.
 */

